This is my HTML structure:
<div id="divImporte">
<p class="btn01">
<input type="button" name="Enviar Tasas" value="Enviar Tasas">
</p>
</div>
And this is the ways how i try to select the input:
first way:
const buttonTasas = await page.$$("input[type='button'][value='Enviar Tasas']");
second way:
const buttonTasas = await page.waitForSelector("input[type='button'][value='Enviar Tasas']");
and then click it:
if (buttonTasas && buttonTasas.length > 0) {
await buttonTasas[0].click();
}
i got this error:
"Error: Node is either not clickable or not an HTMLElement"
How can i solve? thanks
Sometimes puppeteer just fails to click for some reason, so after double checking that buttonTasas is not null and trying to add some delay just before calling the click() method, you can try the following workaround to call the click function directly in the page:
page.evaluate((btnSelector) => {
// this executes in the page
document.querySelector(btnSelector).click();
}, "input[type='button'][value='Enviar Tasas']");
or maybe can you use the element directly:
page.evaluate((btn) => {
// this executes in the page
btn.click();
}, buttonTasas);
UI tools for browsers usually have issues with white spaces. Try to search an element using an expression without any spaces or new lines. You can find a word inside a string using *= in CSS expressions:
await page.$$("input[type='button'][value*='Enviar']");
or
await page.$$("input[type='button'][value*='Enviar'][value*='Tasas']");